package com.nexgo.lamp;

import com.nexgo.sound.BeeperManager;

/**
 * Created by xiaox on 2017/11/29.
 */

public class LampOperate {
    private static LampOperate INSTANCE;
    private LampManager mLampManager;

    private LampOperate() {
    }

    public static LampOperate getInstance() {
        if (INSTANCE == null) {
            synchronized (LampOperate.class) {
                INSTANCE = new LampOperate();
            }
        }
        return INSTANCE;
    }

    /**
     * 激活卡片亮灯
     */
    public void transActiveCard() {
        closeAll();
        mLampManager = new LampManager.Builder()
                .setBlueLamp(LampManager.OperateType.ON)
                .build();
        mLampManager.operate();
    }

    /**
     * 交易处理中
     */
    public void transOperateCard() {
        closeAll();
        mLampManager = new LampManager.Builder()
                .setBlueLamp(LampManager.OperateType.ON)
                .setYellowLamp(LampManager.OperateType.ON)
                .build();
        mLampManager.operate();
    }

    /**
     * 移出卡片
     */
    public void transRemoveCard() {
        closeAll();
        mLampManager = new LampManager.Builder()
                .setBlueLamp(LampManager.OperateType.ON)
                .setYellowLamp(LampManager.OperateType.ON)
                .setGreenLamp(LampManager.OperateType.ON)
                .setPeriod(750)
                .build();
        mLampManager.operate();
        new BeeperManager().beep(BeeperManager.Type.NORMAL);
    }

    /**
     * 交易联机闪灯
     */
    public void transConnecting() {
        closeAll();
        mLampManager = new LampManager.Builder()
                .setBlueLamp(LampManager.OperateType.ON)
                .setYellowLamp(LampManager.OperateType.ON)
                .setGreenLamp(LampManager.OperateType.TWINK_CONNECTING)
                .build();
        mLampManager.operate();
    }

    /**
     * 交易成功亮灯
     */
    public void transSuccess() {
        closeAll();
        mLampManager = new LampManager.Builder()
                .setBlueLamp(LampManager.OperateType.ON)
                .setYellowLamp(LampManager.OperateType.ON)
                .setGreenLamp(LampManager.OperateType.ON)
                .setPeriod(750)
                .build();
        mLampManager.operate();
        new BeeperManager().beep(BeeperManager.Type.NORMAL);
    }

    /**
     * 交易失败亮灯
     */
    public void transFailure() {
        closeAll();
        mLampManager = new LampManager.Builder()
                .setRedLamp(LampManager.OperateType.ON)
                .build();
        mLampManager.operate();
        new BeeperManager().beep(BeeperManager.Type.FAIL);
    }

    /**
     * 交易空闲闪灯，蓝灯每间隔5秒闪烁一次，每次亮灯时长大约200ms
     */
    public void transIdle() {
        closeAll();
        mLampManager = new LampManager.Builder()
                .setBlueLamp(LampManager.OperateType.TWINK_IDLE)
                .build();
        mLampManager.operate();
    }

    /**
     * 关闭所有的灯
     */
    public void closeAll() {
        if (mLampManager != null) {
            mLampManager.close();
        }
    }
}
